#ifndef __LDX_IPROGRAM_H_INCLUDE__
#define __LDX_IPROGRAM_H_INCLUDE__
#include "LDXConfig.h"
#include "PublicShaderDefines.h"
#include "CBufferObject.h"
#include "IReferenceCounted.h"

namespace ldx
{
	namespace render
	{
		/**
		* Base class of GPU program.
		*/
		class IProgram:public IReferenceCounted
		{
		public:

			virtual ~IProgram() {};

			virtual void set(SShaderMid mid) {}

			virtual void use() {}

			virtual void stopUsing() {}

			virtual void setConstantBuffers(E_SHADER_TYPE type,
				uint startSlot, uint numBuffer,
				CBufferObject& bufferObjet) {}


		};
	}
}

#endif//! __LDX_IPROGRAM_H_INCLUDE__